package com.lianrui.core;

import org.springframework.stereotype.Controller;

import com.lianrui.commons.ResultView;

/**
 * 功能描述：控制器接口
 *
 * @author LJQ
 *
 * @param <P> 分页类型
 * @param <VO> 视图类型
 * @param <D> 实体类型
 * @param <T> 主键类型
 * 2015年12月21日 下午5:05:26
 */
@Controller
@SuppressWarnings("unchecked")
public interface IController<P, D, T> {
	
	/**
	 * 功能描述：添加实体
	 * @param vo 实体对象
	 * @return 任意类型
	 */
	ResultView<?> add(D d);
	
	/**
	 * 功能描述：删除实体
	 * @param id 实体编码
	 * @return 任意类型
	 */
	ResultView<?> delete(T... id);
	
	/**
	 * 功能描述：更新实体
	 * @param vo 实体对象
	 * @return 任意类型
	 */
	ResultView<?> update(D d);
	
	/**
	 * 功能描述：查询唯一实体对象
	 * @param id 实体编码
	 * @return 任意类型
	 */
	ResultView<?> unique(T id);
	
	/**
	 * 功能描述：通过编码组获取实体列表
	 * @param id 实体编码组
	 * @return 任意类型
	 */
	ResultView<?> get(T... id);
	
	/**
	 * 功能描述：分页查询实体列表
	 * @param page 分页对象
	 * @return 任意类型
	 */
	P list(P page);
	
	/**
	 * 功能描述：获取本地服务
	 * @return
	 */
	public abstract IService<P, D, T> getService();
	
}
